package librairies.liste;

import librairies.liste.interfaces.IIterateur;
import librairies.liste.list.ListeDCE;

import org.junit.Test;

public class ListeDCETest
{
	@Test
	public void testexecut()	//ok
	{
		ListeDCE<Integer> l1 = new ListeDCE<Integer>();
		System.out.print(l1+" renversée : "); l1.reverse(); System.out.println(l1); 
		l1 = new ListeDCE<Integer>();
		l1.add(1);
		System.out.print(l1+" renversée : "); l1.reverse(); System.out.println(l1); 
		l1 = new ListeDCE<Integer>();
		l1.add(1).add(-2).add(17).add(0).add(15);
		System.out.print(l1+" renversée : "); l1.reverse(); System.out.print(l1);
		l1.reverse(); System.out.println(" re-renversée : "+l1); 
		
		ListeDCE<Integer> l2 = new ListeDCE<Integer>();
		System.out.print(l2+" en tableau : "); for(Object o : l2.toArray()) System.out.print("|"+o);
		System.out.println("|");
		l2 = new ListeDCE<Integer>();
		l2.add(-10).add(-20).add(-30);
		System.out.print(l2+" en tableau : "); for(Object o : l2.toArray()) System.out.print("|"+o);
		System.out.println("|");
		
		l2 = new ListeDCE<Integer>();
		l2.add(-10).add(5).add(7).add(0).add(0).add(-2).add(18).add(53).add(32).add(-41).add(-30);
		IIterateur<Integer> it1 = l2.iterator();
		IIterateur<Integer> it2 = l2.iterator();
		while(it1.hasNext()) it1.next();
		System.out.println("Parcours de : "+l2+" :");
		for(int i=0; i<l2.size(); i++) 
		{
			it1.hasPrevious();
			it2.hasNext();
			System.out.println(l2.get(i)+" "+it1.previous()+" "+it2.next());
		}
		it1 = l2.iterator();
		System.out.println("Suppression des nombres négatifs et incrément des nombres pairs dans "+l2+" :");
		while(it1.hasNext()) 
		{
			Integer val = it1.next();
			
			if(val<0) it1.remove();
			else if(val%2==0) it1.set(val+1);
		}
		System.out.println("-> "+l2+" (tete : "+l2.getTete().getValeur()+" ; queue : "+l2.getQueue().getValeur()+")");
		
		l2 = new ListeDCE<Integer>();
		l2.add(-10).add(5).add(7).add(0).add(0).add(-2).add(18).add(53).add(32).add(-41).add(-30);
		System.out.println("maximum / minimum dans "+l2+" : "+l2.max()+" / "+l2.min());
		System.out.println("sous-ensemble compris entre -30 et 7 dans "+l2+" : "+l2.subSet(-30, 7));

		System.out.print(l2+" triée : "); l2.sort(); System.out.println(l2);
		
		System.out.print(" FINI ");
		/*
			( ) renversée : ( )
			( 1 ) renversée : ( 1 )
			( 1 -2 17 0 15 ) renversée : ( 15 0 17 -2 1 ) re-renversée : ( 1 -2 17 0 15 )
			( ) en tableau : |
			( -10 -20 -30 ) en tableau : |-10|-20|-30|
			Parcours de : ( -10 5 7 0 0 -2 18 53 32 -41 -30 ) :
			-10 -30 -10
			5 -41 5
			7 32 7
			0 53 0
			0 18 0
			-2 -2 -2
			18 0 18
			53 0 53
			32 7 32
			-41 5 -41
			-30 -10 -30
			Suppression des nombres négatifs et incrément des nombres pairs dans ( -10 5 7 0 0 -2 18 53 32 -41 -30 ) :
			-> ( 5 7 1 1 19 53 33 ) (tete : 5 ; queue : 33)
			maximum / minimum dans ( -10 5 7 0 0 -2 18 53 32 -41 -30 ) : 53 / -41
			sous-ensemble compris entre -30 et 7 dans ( -10 5 7 0 0 -2 18 53 32 -41 -30 ) : ( -10 5 0 0 -2 -30 )
			( -10 5 7 0 0 -2 18 53 32 -41 -30 ) triée : ( -41 -30 -10 -2 0 0 5 7 18 32 53 )
		 */	
	}
	
	@Test
	public void testRemove()	//ok
	{
		ListeDCE<String> liste = new ListeDCE<String>();
		int pos = 0;
		
		liste.add("aaaa");
		liste.add("bbbb");
		liste.add("cccc");
		liste.add("dddd");
		liste.add("eeee");
		liste.add("ffff");
		liste.add("gggg");
		liste.add("hhhh");
		
		for(int i = 0 ; i < liste.size(); ++i)
		{
			pos = i;
			if(liste.get(i).equals("dddd"))
			{
				i = liste.size() + 1;
			}
		}
		
		for(int i = 0; i < pos + 1; ++i)
		{
			liste.remove(0);
		}
		
		for(int i = 0; i < 0 + 1; ++i)
		{
			liste.remove(0);
		}
		
		for(int i = 0 ; i < liste.size(); ++i)
		{
			System.out.println(liste.get(i));
		}
	}
}
